package com.sdy.usercenter.biz.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.sdy.usercenter.biz.model.SysDept;
import com.sdy.mvc.service.BaseService;
import com.sdy.usercenter.biz.model.SysUserDept;
import com.sdy.usercenter.biz.model.vo.DeptVO;
import com.sdy.usercenter.biz.model.vo.LayTreeItem;
import com.sdy.usercenter.biz.model.vo.UserDeptInfoVo;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 组织机构信息表 服务类
 * </p>
 *
 * @author zzq
 * @since 2019-06-14
 */
public interface SysDeptService extends BaseService<SysDept> {
    /**
     * 查询组织树
     */
    LayTreeItem getDeptTree();

    /**
     * 部门管理员分页数据
     */
    IPage<UserDeptInfoVo> managerPageData(IPage<SysUserDept> page, Map<String, Object> query, Integer deptId);

    /**
     * 部门管理员分页数据
     */
    IPage<UserDeptInfoVo> userPageData(IPage<SysUserDept> page, Map<String, Object> query, Integer deptId);

    /**
     * 增加部门管理员
     */
    Integer addManagerBatch(List<Integer> userIdList, Integer deptId);

    /**
     * 移除部门管理员
     */
    Integer delManagerBatch(List<Integer> userIdList, Integer deptId);

    /**
     * 查询子部门
     * @param parentId 父部门id
     */
    List<DeptVO> listSubDept(Integer parentId);
    
    SysDept getByCode(String code);

    List<DeptVO> listDept(String keyword);
    
    List<SysDept> getDeptAccessorList(Integer deptId);
    
    void updateDept(SysDept sysDept);
}
